package easycloud.ecs.agent.statistics;

import java.util.Observable;

import org.apache.commons.lang.builder.ToStringBuilder;

public class ProviderStatistics extends Observable {

	private int numberOfHead;

	private int numberOfPut;

	private int numberOfGet;

	private int numberOfList;

	private int numberOfListRoots;

	private int numberOfDelete;

	public int getNumberOfDelete() {
		return numberOfDelete;
	}

	public int getNumberOfGet() {
		return numberOfGet;
	}

	public int getNumberOfHead() {
		return numberOfHead;
	}

	public int getNumberOfList() {
		return numberOfList;
	}

	public int getNumberOfListRoots() {
		return numberOfListRoots;
	}

	public int getNumberOfPut() {
		return numberOfPut;
	}

	public int getNumberOfTotalGet() {
		return numberOfGet + numberOfHead + numberOfList + numberOfListRoots;
	}

	public int getNumberOfTotalPost() {
		return getNumberOfDelete() + getNumberOfPut();
	}

	public void incNumberOfDelete() {
		numberOfDelete++;
		setChanged();
		this.notifyObservers();
	}

	public void incNumberOfGet() {
		numberOfGet++;
		setChanged();
		this.notifyObservers();
	}

	public void incNumberOfHead() {
		numberOfHead++;
		setChanged();
		this.notifyObservers();
	}

	public void incNumberOfList() {
		numberOfList++;
		setChanged();
		this.notifyObservers();
	}

	public void incNumberOfListRoots() {
		numberOfListRoots++;
		setChanged();
		this.notifyObservers();
	}

	public void incNumberOfPut() {
		numberOfPut++;
		setChanged();
		this.notifyObservers();
	}

	public void setNumberOfDelete(int numberOfDelete) {
		this.numberOfDelete = numberOfDelete;
	}

	public void setNumberOfGet(int numberOfGet) {
		this.numberOfGet = numberOfGet;
	}

	public void setNumberOfHead(int numberOfHead) {
		this.numberOfHead = numberOfHead;
	}

	public void setNumberOfList(int numberOfList) {
		this.numberOfList = numberOfList;
	}

	public void setNumberOfListRoots(int numberOfListRoots) {
		this.numberOfListRoots = numberOfListRoots;
	}

	public void setNumberOfPut(int numberOfPut) {
		this.numberOfPut = numberOfPut;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}
